/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Classes;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author jean
 */
public class FazerBackup {
    
    private boolean sucesso;
    private String caminhoPgDump;
    private String caminhoSalvar;
    private String nomeBase;
    private String url;
    private String porta;
    private String user;
    private String senha;

    //<editor-fold defaultstate="collapsed" desc="getters and setters">
    public boolean isSucesso() {
        return sucesso;
    }

    public void setSucesso(boolean sucesso) {
        this.sucesso = sucesso;
    }

    public String getCaminhoPgDump() {
        return caminhoPgDump;
    }
    
    public void setCaminhoPgDump(String caminhoPgDump) {
        this.caminhoPgDump = caminhoPgDump;
    }
    
    public String getCaminhoSalvar() {
        return caminhoSalvar;
    }
    
    public void setCaminhoSalvar(String caminhoSalvar) {
        this.caminhoSalvar = caminhoSalvar;
    }
    
    public String getNomeBase() {
        return nomeBase;
    }
    
    public void setNomeBase(String nomeBase) {
        this.nomeBase = nomeBase;
    }
    
    public String getPorta() {
        return porta;
    }
    
    public void setPorta(String porta) {
        this.porta = porta;
    }
    
    public String getSenha() {
        return senha;
    }
    
    public void setSenha(String senha) {
        this.senha = senha;
    }
    
    public String getUrl() {
        return url;
    }
    
    public void setUrl(String url) {
        this.url = url;
    }
    
    public String getUser() {
        return user;
    }
    
    public void setUser(String user) {
        this.user = user;
    }
    //</editor-fold>

    public FazerBackup(String caminhoPgDump, String caminhoSalvar, String nomeBase, String url, String porta, String user, String senha) {
        this.caminhoPgDump = caminhoPgDump;
        this.caminhoSalvar = caminhoSalvar;
        this.nomeBase = nomeBase;
        this.url = url;
        this.porta = porta;
        this.user = user;
        this.senha = senha;
    }
    
    public void realizaBackup() {
        sucesso = false;
        
        final List<String> comandos = new ArrayList<>();
        
        comandos.add(caminhoPgDump);
        comandos.add("-i");
        comandos.add("-h");
        comandos.add(url);
        comandos.add("-p");
        comandos.add(porta);
        comandos.add("-U");
        comandos.add(user);
        comandos.add("-F");
        comandos.add("c");
        comandos.add("-b");
        comandos.add("-v");
        comandos.add("-f");
        comandos.add(caminhoSalvar);
        comandos.add(nomeBase);
        
        ProcessBuilder pb = new ProcessBuilder(comandos);
        pb.environment().put("PGPASSWORD", senha);
        
        try {
            final Process process = pb.start();
            try (BufferedReader r = new BufferedReader(new InputStreamReader(process.getErrorStream()))) {
                String line = r.readLine();
                while (line != null) {
                    System.err.println(line);
                    line = r.readLine();
                }
            }
            process.waitFor();
            process.destroy();
            sucesso = true;
        } catch (IOException | InterruptedException e) {
        }
    }
}